package main

import (
	"fmt"
	"reflect"
)

// 定义一个结构体
type Student struct{
	Name string `json:"name" form:"username"`
	Age int  `json:"age"`
	Score int `json:"score"`
}
// 反射修改结构体属性
func reflectChangeStruct(s interface{}){
	t:=reflect.TypeOf(s)
	v :=reflect.ValueOf(s)
	if t.Kind() !=reflect.Ptr{
		fmt.Println("传入的不是结构体指针类型")
		return
	}else if t.Elem().Kind()!=reflect.Struct{
			fmt.Println("传入的不是结构体指针类型")
			return 
		}
		//修改结构体属性的值
		name :=v.Elem().FieldByName("Name")
		name.SetString("小于")
		age :=v.Elem().FieldByName("Age")
		age.SetInt(22)
		fmt.Println(s)
	}

func main(){
// 将结构体实例化
	 stu := Student{
		Name:"小明",
		Age:22,
		Score: 60,
	}
	reflectChangeStruct(&stu)
}